package Soligee.controller.facade.sessionFacadeImplements;

import Soligee.controller.facade.sessionFacade.SessionFacadeCadastrar;
import Soligee.model.vo.lancamentos.NFEntradaVO;
import Soligee.model.vo.lancamentos.OrcamentoVO;
import Soligee.model.vo.lancamentos.ItensNFEntradaVO;
import Soligee.model.vo.lancamentos.ItensNFEntradaPKVO;
import Soligee.controller.bo.*;
import Soligee.controller.facade.sessionFacade.SessionFacadeBuscar;
import Soligee.model.persistencia.*;
import Soligee.model.vo.cadastros.*;
import Soligee.model.vo.lancamentos.BancoVO;
import Soligee.model.vo.lancamentos.ChequeVO;
import Soligee.model.vo.lancamentos.FormaPagamentoVO;
import Soligee.model.vo.lancamentos.ItensCompraVO;
import Soligee.model.vo.lancamentos.ItensOrcamentoPKVO;
import Soligee.model.vo.lancamentos.ItensOrcamentoVO;
import Soligee.model.vo.lancamentos.ItensVendaPKVO;
import Soligee.model.vo.lancamentos.ItensVendaVO;
import Soligee.model.vo.lancamentos.LancamentoCaixaVO;
import Soligee.model.vo.lancamentos.PedidoCompraVO;
import Soligee.model.vo.lancamentos.VendaVO;
import java.io.IOException;
import java.util.Date;
import java.util.List;

public class SessionFacadeCadastrarImplements implements SessionFacadeCadastrar {

    public boolean cadastrarUsuario(int codUsuario,String login, int nivel, String senha,String nome)throws Exception{

        //cria usuario
        
        UsuarioVO usuario = new UsuarioVO(codUsuario,login,nivel,senha,nome);

        //cria dao

        DAO dao = new DAO(UsuarioVO.class);
        boolean controle =  dao.Incluir(usuario);
        //instancia dao usuario e inclui no banco
        if(controle)
            return true;
        else
            return false;
    }

    public boolean cadastrarRepresentante(int codRepresentante, String nome, String telefoneUm, String telefoneDois,
            String email, String paginaWeb, String caminhoImagem, Date dataCadastro,

        //parametros de Endereço
        
        int codEndereco ,String rua, String bairro, String cep, String numero, String complemento,
        
        //parametros de Cidade
        
        int codCidade)
        
        throws Exception {

        String typeAdress = "comercial";

       

        RepresentanteVO representante = new RepresentanteVO(codRepresentante,nome,telefoneUm, telefoneDois,email,paginaWeb,
                caminhoImagem,dataCadastro);
        
        PessoaBO pbo = new PessoaBO();
         
        CidadeVO cidade = pbo.determinaCidade(codCidade);      

        //Parametros da classe Endereço


        EnderecoVO end = new EnderecoVO(codEndereco,typeAdress,rua, bairro, cep, numero, complemento, representante, cidade);

   

        DAO dao = new DAO (RepresentanteVO.class);

        DAO dao2 = new DAO (EnderecoVO.class);

        boolean controle = dao.Incluir(representante);

        boolean controle2 = dao2.Incluir(end);
        if(controle&&controle2)
            return true;
        else
            return false;
    }

    public boolean cadastrarPessoaFisica (

    //parametros Pessoa
            
    int casaPropria,int codPessoa,

    String nome,String telefoneUm, String telefoneDois, String telefoneTres,Date dataNasc,String rg,String email,String paginaWeb,

    String referencias,String cpf, String caminhoImagem, Date dataCadastro,

    String obs, String localTrab, double salario,int seprocado,String localNasc,

    //parametros de Endereço

    int codEndereco,int tipoEndereco,String rua, String bairro, String cep, String numero, String complemento,

    // parametros CidadeVO

    int codCidade)

    throws IOException, Exception {

        boolean haveHome;

        if(casaPropria==1){

            haveHome = true;
        
        }else{

            haveHome = false;
        }

        boolean isSeprocado;

        if(seprocado==1){

            isSeprocado = true;

        }else{

            isSeprocado = false;

        }

        String typeAdress;

        if(tipoEndereco==1){

            typeAdress = "residencial";

        }else{

            typeAdress = "comercial";

        }

        PessoaBO pbo = new PessoaBO();

        CidadeVO cidade = pbo.determinaCidade(codCidade);      

      //  if(pbo.validarCPF(cpf)){

           //Parametros da classe Pessoa Fisica

          PessoaFisicaVO pessoa = new PessoaFisicaVO(codPessoa, nome,telefoneUm, telefoneDois,telefoneTres ,email, paginaWeb, 
                  caminhoImagem, dataCadastro,dataNasc, rg, cpf, haveHome, referencias,localTrab, isSeprocado, obs,
                  localNasc, salario);

           //Parametros da classe Endereço

           EnderecoVO end = new EnderecoVO(codEndereco,typeAdress,rua, bairro, cep, numero, complemento, pessoa, cidade);


           DAO dao = new DAO(PessoaFisicaVO.class);
      
           DAO dao2 = new DAO(EnderecoVO.class);
           
           //Métodos de inclusão do DAO para inserçao de dados no BD

           boolean controle = dao.Incluir(pessoa);
           boolean controle2 = dao2.Incluir(end);
           if(controle&&controle2)
               return true;
           else
               return false;

    }

    public boolean cadastrarPessoaJurididca(int codPessoa, String nome,String telefoneUm, String telefoneDois,String email,
            String paginaWeb,String caminhoImagem,Date dataCadastro,String razaoSocial,String cnpj,String inscEstadual,

    //parametros de Endereço
    int codEndereco,int tipoEndereco,String rua, String bairro, String cep, String numero, String complemento,

    // parametros CidadeVO
    int codCidade)

            throws Exception{

            String typeAdress;

            if(tipoEndereco==1){

            typeAdress = "residencial";

            }else{

            typeAdress = "comercial";

            }

            PessoaBO pbo = new PessoaBO();
            CidadeVO cidade = pbo.determinaCidade(codCidade);
            System.out.print(cidade.getNome());

             /*   if (pbo.validaCnpj(cnpj)) {
*/
                PessoaJuridicaVO pessoaJuri = new PessoaJuridicaVO(codPessoa, nome,telefoneUm,telefoneDois, email,
                        paginaWeb, caminhoImagem,dataCadastro,razaoSocial,cnpj,inscEstadual);

                //Parametros de Endereço
                EnderecoVO endereco = new EnderecoVO(codEndereco,typeAdress,rua,bairro,cep,numero,complemento,pessoaJuri,
                        cidade);
             

                DAO dao = new DAO (PessoaJuridicaVO.class);
                DAO dao2 = new DAO (EnderecoVO.class);

                boolean controle = dao.Incluir(pessoaJuri);
                boolean controle2 = dao2.Incluir(endereco);

                if(controle&&controle2)
                    return true;
                else
                    return false;
       }

       public boolean cadastrarFornecedor(int codRepresentante,String nome,String telefoneUm, String telefoneDois, String email,
               String paginaWeb, String caminhoImagem, Date dataCadastro,String razaoSocial,String cnpj, String inscEstadual,
               String ramoAtividade,

       //parametros de Endereço
       int codEndereco,int tipoEndereco,String rua, String bairro, String cep, String numero, String complemento,

       // parametros CidadeVO
       int codCidade)

       throws Exception{

        PessoaBO pbo = new PessoaBO();

        CidadeVO cidade = pbo.determinaCidade(codCidade);

            String typeAdress;

            if(tipoEndereco==1){

            typeAdress = "residencial";

            }else{

            typeAdress = "comercial";

            }                    
                FornecedorVO fornecedor = new FornecedorVO(codRepresentante,nome,telefoneUm,telefoneDois,email,
                        paginaWeb,caminhoImagem,dataCadastro,razaoSocial,cnpj,inscEstadual,ramoAtividade);

                EnderecoVO endereco = new EnderecoVO(codEndereco,typeAdress,rua,bairro,cep,numero,complemento,fornecedor,
                        cidade);

                

                DAO dao = new DAO (PessoaJuridicaVO.class);
                DAO dao2 = new DAO (EnderecoVO.class);

                boolean controle = dao.Incluir(fornecedor);
                boolean controle2 = dao2.Incluir(endereco);

            if(controle&&controle2)
                return true;
            else
                return false;
       }

       public boolean cadastrarOrcamento(int codVendedor,int codOrcamento,int codCliente,Date dataOrcamento,
            Date validadeProposta,int quantidadeProduto,int planoPagamento,double valorTotalVista,double valorTotalPrazo,
            String observacoes,List<ItensOrcamentoVO> listaItens,List<ProdutoVO> listaProdutos)

            throws Exception{

            SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();

            VendedorVO vendedor = (VendedorVO)facadeBusca.buscaPorCodigo(VendedorVO.class,"codVendedor",codVendedor).iterator().next();
           
            PessoaVO pessoa = (PessoaVO)facadeBusca.buscaPorCodigo( PessoaVO.class,"codPessoa",codCliente).iterator().next();

            OrcamentoVO orcamento= new OrcamentoVO(vendedor,pessoa,codOrcamento,dataOrcamento,validadeProposta,
                    quantidadeProduto,planoPagamento,valorTotalVista,valorTotalPrazo,observacoes);

            DAO dao = new DAO(OrcamentoVO.class);

            boolean controle2 = dao.Incluir(orcamento);
            ItensOrcamentoVO itensnorcamento =  new ItensOrcamentoVO();

            boolean verifica = false;

            int controle=0;

            for(int i =0; i < listaItens.size(); i++){

                //definindo a chave composta para itensnotafiscal
                ItensOrcamentoPKVO chavecomposta = new ItensOrcamentoPKVO();

                //seta a chave composta
                chavecomposta.setProduto(listaProdutos.get(i));

                chavecomposta.setOrcamento(orcamento);

                //cria o item
                itensnorcamento=listaItens.get(i);

                //seta a chave composta criada para o item
                itensnorcamento.setChaveComposta(chavecomposta);

                //instancia um dao para NFEntradaVO.class
                DAO dao3 = new DAO(ItensNFEntradaVO.class);

                //inclui itemnf no banco e retorna um boolean
                verifica=dao3.Incluir(itensnorcamento);
                
                controle++;
            }

            if(verifica&&controle2)

                return true;
            else

                return false;
    }

       public boolean cadastrarProduto (int codSubcategoria,int codCategoria, int codMarca,int codProduto,String descricao,
               String unidade,double qtdadeEstoque,double quantidadeMinima,double precoCusto,double precoVenda,
               double percentualVenda)throws Exception{

            //cria facade busca para realizacao das mesmas
            SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();

            //busca no bd a subcategoria de acordo com o codigo passado
            SubcategoriaVO subcategoria = (SubcategoriaVO)facadeBusca.buscaPorCodigo(SubcategoriaVO.class,"codSubCategoria",codSubcategoria).iterator().next();

            CategoriaVO categoria = subcategoria.getCodCategoria();
            
            MarcaVO marca = subcategoria.getCodCategoria().getMarca();

            //cria o produto para ser cadastrado
            ProdutoVO produto = new ProdutoVO (codProduto,descricao,unidade,qtdadeEstoque,
                    quantidadeMinima,precoCusto,precoVenda,categoria,subcategoria,
                    marca,percentualVenda);

            //cria o dao para cadastro
            DAO dao = new DAO(ProdutoVO.class);
            //incluir o produto no banco
            boolean controle = dao.Incluir(produto);
            if(controle)
                return true;
            else
                return false;
      }

       public boolean cadastrarVendedor (int codVendedor, String nome,double comissaoVendaPrazo,double comissaoVendaVista)throws Exception {       

           VendedorVO vendedor = new VendedorVO (codVendedor,nome,comissaoVendaPrazo,comissaoVendaVista);
            DAO dao = new DAO(VendedorVO.class);
            boolean controle = dao.Incluir(vendedor);
            if(controle)
                return true;
            else
                return false;
       }

       public boolean cadastrarNFEntrada (int codNFEntrada, Date data_emissao,Date data_entrada,int numero_nf,
               int qtdadeParcela, double percentualIPI,double percentual_frete,double percentual_desconto,
               double percentual_embalagem,double valortotal_produto,double valortotal_nota,int codFornecedor,
       //Listas auxiliares
       List<ItensNFEntradaVO> listaItens,List<ProdutoVO> listaProdutos) throws IOException, Exception{

       //busca para preencher corretamente com os dados do fornecedor
       SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();

       FornecedorVO fornec =(FornecedorVO)facadeBusca.buscaPorCodigo(FornecedorVO.class,"codPessoa", codFornecedor).iterator().next();

       NFEntradaVO nfentrada = new NFEntradaVO(codNFEntrada,data_emissao,data_entrada,numero_nf,qtdadeParcela,percentualIPI,
               percentual_frete,percentual_desconto,percentual_embalagem,valortotal_produto,valortotal_nota,fornec);

       boolean verifica=false;

       int controle=0;

       ItensNFEntradaVO itensnfentrada = new ItensNFEntradaVO();
       DAO dao = new DAO(NFEntradaVO.class);
       boolean controle2 = dao.Incluir(nfentrada);

       for(int i =0; i < listaItens.size(); i++){

           //definindo a chave composta para itensnotafiscal
           ItensNFEntradaPKVO chavecomposta = new ItensNFEntradaPKVO();

           //seta a chave composta
           chavecomposta.setProduto(listaProdutos.get(i));
           chavecomposta.setNfentrada(nfentrada);

           //cria o item
           itensnfentrada=listaItens.get(i);
           //seta a chave composta criada para o item

           itensnfentrada.setChaveComposta(chavecomposta);

           //instancia um dao para NFEntradaVO.class
           DAO dao2 = new DAO(ItensNFEntradaVO.class);

           //inclui itemnf no banco e retorna um boolean
           verifica=dao2.Incluir(itensnfentrada);

           controle++;                
       }
       /*Criação das parcelas*/
           //Variaveis
           Date data = new Date();
           System.out.println(qtdadeParcela); 
           if (qtdadeParcela==1){
               cadastrarParcelaNF(nfentrada,valortotal_nota, 1, 1, 1, data);
               SessionFacadeCadastrarImplements facadeCadastrar = new SessionFacadeCadastrarImplements();
               facadeCadastrar.cadastrarLancamentoCaixa("Pagamento de NF a vista, n° " + nfentrada.getCodNFEntrada(), nfentrada.getValorTotalNota(), 0, 2);
           }else{
               double valorParcela = valortotal_nota/qtdadeParcela;
               for(int i=1;i<=qtdadeParcela;i++){
                   cadastrarParcelaNF(nfentrada, valorParcela, i, qtdadeParcela, 0, data);
                   data.setMonth(data.getMonth()+1);
               }
           }
             
       if(verifica&&controle2)
                return true;
            else
                return true;
        }
       
        public boolean cadastrarPedido(int codPedido, int codFornecedor, int codRepresentante, Date dataEmissao, Date dataRecebimento,
                int codFormaPgto, double percentFrete, double percentDesc, double percentEmbalagem, double valorTotalItens,
                double valorTotalPedido,List<ItensCompraVO> listaItens)
                
        throws Exception {
                    

            SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();

            FormaPagamentoVO formaPagamento = (FormaPagamentoVO)facadeBusca.buscaPorCodigo(FormaPagamentoVO.class,"codFormaPagamento", codFormaPgto).iterator().next();

            FornecedorVO fornec =(FornecedorVO)facadeBusca.buscaPorCodigo(FornecedorVO.class,"codPessoa", codFornecedor).iterator().next();

            RepresentanteVO rep =(RepresentanteVO)facadeBusca.buscaPorCodigo(RepresentanteVO.class,"codPessoa", codRepresentante).iterator().next();

            PedidoCompraVO pedido = new PedidoCompraVO(codPedido,dataEmissao,dataRecebimento,fornec,rep,formaPagamento,
                    percentFrete,percentDesc,percentEmbalagem,valorTotalItens,valorTotalPedido);
           
            boolean verifica=false;

            //persiste o pedido
            DAO dao = new DAO(PedidoCompraVO.class);
            boolean controle = dao.Incluir(pedido);

            //persiste o item compra
            DAO dao2 = new DAO(ItensCompraVO.class);
            for(int i =0; i < listaItens.size(); i++){
                ItensCompraVO itemCompra = listaItens.get(i);
                itemCompra.setPedidocompra(pedido);
                //inclui itemnf no banco e retorna um boolean
                verifica=dao2.Incluir(listaItens.get(i));
            }
      
            if(verifica&&controle)
                return true;
            else
                return false;
        }

       public boolean cadastrarCategoria (int codCategoria, int codMarca,String descricao, Double comissaoVenda) throws Exception {

          //busca para preencher corretamente com os dados do fornecedor
          SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();

           //busca no bd a marca de acordo com o codigo passado
           MarcaVO marca = (MarcaVO)facadeBusca.buscaPorCodigo(MarcaVO.class,"codMarca",codMarca).iterator().next();

           CategoriaVO categoria = new CategoriaVO (1, marca,descricao, comissaoVenda);

           DAO dao = new DAO(CategoriaVO.class);
           //instancia dao usuario e inclui no banco

           boolean controle = dao.Incluir(categoria);
           if(controle)
               return true;
           else
               return false;
       }

       public boolean cadastrarSubcategoria (int codSubcategoria, int codCategoria, String descricao) throws Exception {

          //busca para preencher corretamente com os dados do fornecedor
          SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();

           //busca no bd a marca de acordo com o codigo passado
           CategoriaVO categoria = (CategoriaVO)facadeBusca.buscaPorCodigo(CategoriaVO.class,"codCategoria",codCategoria).iterator().next();

           SubcategoriaVO subcategoria = new SubcategoriaVO (codSubcategoria, descricao,categoria);

           DAO dao = new DAO(SubcategoriaVO.class);

           boolean controle = dao.Incluir(subcategoria);
           if(controle)
               return true;
           else

               return false;
       }

       public boolean cadastrarMarca (int codMarca, String descricao) throws Exception {
           MarcaVO marca = new MarcaVO (codMarca, descricao);
           DAO dao = new DAO(MarcaVO.class);
            boolean controle = dao.Incluir(marca);
            if(controle)
                return true;
            else
                return false;
       }

      //metodo para cadastro de venda
      public boolean cadastrarVenda(int codVenda, Date dataVenda, double desconto, double acrescimo, int quantidadeParcela, double totalItens, double totalVendas,
            int codFormaPagamento, int tipoCliente, int codCliente, int codVendedor,List<ItensVendaVO> listaItens,List<ProdutoVO> listaProdutos)throws Exception{

            SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();
            
            FormaPagamentoVO formaPagamento = (FormaPagamentoVO)facadeBusca.buscaPorCodigo(FormaPagamentoVO.class,"codFormaPagamento", codFormaPagamento).iterator().next();

            PessoaVO pessoa = new PessoaVO();

            //se for fisico
            if(tipoCliente == 1){
                pessoa = (PessoaVO)facadeBusca.buscaPorCodigo(PessoaFisicaVO.class,"codPessoa",codCliente).iterator().next();
            }else{//se for juridico
                if(tipoCliente == 2){
                    pessoa = (PessoaVO)facadeBusca.buscaPorCodigo(PessoaJuridicaVO.class,"codPessoa",codCliente).iterator().next();
                }
            }            
            VendedorVO vendedor = (VendedorVO)facadeBusca.buscaPorCodigo(VendedorVO.class,"codVendedor",codVendedor).iterator().next();
            VendaVO venda = new VendaVO(codVenda,dataVenda,desconto,acrescimo,quantidadeParcela,totalItens,totalVendas,formaPagamento, pessoa, vendedor);

            boolean verifica=false;

           ItensVendaVO itensVenda = new ItensVendaVO();
           DAO dao = new DAO(VendaVO.class);
           boolean controle2 = dao.Incluir(venda);
           
           /*--------------------------------------
            Criação das parcelas
           --------------------------------------*/
           //Variaveis
           Date data = new Date();   
           if (codFormaPagamento==1){
               cadastrarParcelaVenda(venda,totalVendas, 1, 1, 1, data);
               SessionFacadeCadastrarImplements facadeCadastrar = new SessionFacadeCadastrarImplements();
               facadeCadastrar.cadastrarLancamentoCaixa("Venda a vista, n° " + venda.getCodVenda(), 0, venda.getTotalVendas(), 1);
           }else{
               double valorParcela = totalVendas/quantidadeParcela;
               for(int i=1;i<=quantidadeParcela;i++){
                   cadastrarParcelaVenda(venda, valorParcela, i, quantidadeParcela, 0, data);
                   data.setMonth(data.getMonth()+1);
               }
           }
           /*Fim da criação de parcelas*/

           /*Criação das parcelas*/
           //Variaveis
        
           //criação de itens
           for(int i =0; i < listaItens.size(); i++){
               //definindo a chave composta para item
               ItensVendaPKVO chavecomposta = new ItensVendaPKVO();
               //decrementa o estoque dos produtos
               
               ProdutoVO produto = (ProdutoVO)facadeBusca.buscaPorCodigo(ProdutoVO.class, "codProduto",listaProdutos.get(i).getCodProduto()).iterator().next();
               produto.setQtdadeEstoque(produto.getQtdadeEstoque()-listaItens.get(i).getValorUnitario());
               DAO dao2 = new DAO(ProdutoVO.class);
               dao2.update(produto);
               
               //seta a chave composta
               chavecomposta.setProduto(listaProdutos.get(i));
               chavecomposta.setVendas(venda);
               //cria o item
               itensVenda=listaItens.get(i);
               //seta a chave composta criada para o item
               itensVenda.setChaveComposta(chavecomposta);
               //instancia um dao para item
               DAO dao3 = new DAO(ItensVendaVO.class);
               //inclui item no banco e retorna um boolean
               verifica=dao3.Incluir(itensVenda);
               
           }
           /*Fim da criaÃ§Ã£o de parcelas*/
           if(verifica&&controle2)
                    return true;
                else
                    return false;
            }//fim cadastrar venda

        public boolean cadastrarConta(int codConta, String descricao, double valorConta, Date vencimento, int situacao) throws Exception{
                  ContaVO conta = new ContaVO (codConta, descricao, valorConta, vencimento, situacao);
                  DAO dao = new DAO(ContaVO.class);
                  boolean controle = dao.Incluir(conta);

                  if(controle)
                      return true;
                  else
                      return false;
              }
      public boolean cadastrarParcelaVenda(VendaVO venda, double valorParcela, int numParcela, int numeroDeParcelas, int situacao, Date dataVencimento)throws Exception{

        //cria parcela
        SessionFacadeBuscarImplements facadeBusca2 = new SessionFacadeBuscarImplements();
        int codParcela;
        codParcela = facadeBusca2.totalDeRegistros(ParcelaVendaVO.class)+1;
        ParcelaVendaVO parcela = new ParcelaVendaVO(codParcela, venda, valorParcela, numParcela, numeroDeParcelas, situacao, dataVencimento);

        //cria dao

        DAO dao4 = new DAO(ParcelaVendaVO.class);
        boolean controle3 =  dao4.Incluir(parcela);
        //instancia dao usuario e inclui no banco
        if(controle3)
            return true;
        else
            return false;
    }
    public boolean cadastrarParcelaNF(NFEntradaVO nf, double valorParcela, int numParcela, int numeroDeParcelas, int situacao, Date dataVencimento)throws Exception{

        //cria parcela
        SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();
        int codParcela;
        codParcela = facadeBusca.totalDeRegistros(ParcelaNFEntradaVO.class)+1;
        ParcelaNFEntradaVO parcela = new ParcelaNFEntradaVO(codParcela, nf, valorParcela, numParcela, numeroDeParcelas, situacao, dataVencimento);

        //cria dao

        DAO dao = new DAO(ParcelaNFEntradaVO.class);
        boolean controle =  dao.Incluir(parcela);
        //instancia dao usuario e inclui no banco
        if(controle)
            return true;
        else
            return false;
    }

    public boolean cadastrarContaAPagar (int codConta, String descricao, double valorConta, Date vencimento, int situacao) throws Exception{
        //Cria objeto contaVO
        ContaVO conta = new ContaVO(codConta, descricao, valorConta, vencimento, situacao);
        //Cria DAO
        DAO dao = new DAO(ContaVO.class);
        boolean controle = dao.Incluir(conta);
        return controle;
    }//Fim do Cadastro de Conta a Pagar

    public boolean cadastrarBanco(int cod_banco, String nome_banco, boolean ativo) throws Exception{
         BancoVO banco = new BancoVO(cod_banco, nome_banco, ativo);
         DAO dao = new DAO(BancoVO.class);

         boolean controle = dao.Incluir(banco);
         return controle;

      }
      public boolean cadastrarCheque(int codCheque,String agencia, String numConta, String numCheque, int situacao, String emitente, String obsReferente, Date dataLancamento, Date dataDeposito, double valor, int cod_banco) throws Exception{
          BancoVO banco = (BancoVO) new SessionFacadeBuscarImplements().buscaPorCodigo(BancoVO.class, "cod_banco", cod_banco).iterator().next();

          ChequeVO cheque = new ChequeVO(codCheque,agencia, numConta , numCheque, situacao, emitente, obsReferente, dataLancamento, dataDeposito, valor, banco);
          DAO dao = new DAO(ChequeVO.class);

         boolean controle = dao.Incluir(cheque);
         return controle;
      }

      public boolean cadastrarLancamentoCaixa (String descricao, double debito, double credito, int operacao) throws Exception{
          Date data = new Date();
          SessionFacadeBuscar facadeBusca = new SessionFacadeBuscarImplements();
          int codLancamento = facadeBusca.totalDeRegistros(LancamentoCaixaVO.class)+1;
          LancamentoCaixaVO lancamento = new LancamentoCaixaVO(codLancamento, data, descricao, debito, credito, operacao);
          DAO dao = new DAO(LancamentoCaixaVO.class);
          boolean controle = dao.Incluir(lancamento);
          return controle;
      }

       public boolean cadastrarLembrete (int codLembrete, Date data_lembrete, String descricao) throws Exception{
          Date data_cadastro = new Date();
          LembreteVO lembrete = new LembreteVO(codLembrete, data_cadastro, data_lembrete, descricao);
          DAO dao = new DAO(LembreteVO.class);
          boolean controle = dao.Incluir(lembrete);
          return controle;
      }
      
}//Fim da Classe SessionFacadeCadastrarImplements
